1. Field of the Invention
The present invention relates generally to the field of data communications for personal computers (PCs), and in particular to a system for reducing user-visible latencies occurring during communications between network devices.
2. Related Art
The Internet is quickly becoming the preferred data communications medium for a broad class of computer users ranging from private individuals to large multi-national corporations. Such users now routinely employ the Internet to access information, distribute information, correspond electronically, and even conduct personal conferencing. An ever-growing number of individuals, organizations and businesses have established a presence on the Internet through xe2x80x9cweb pagesxe2x80x9d on the World-Wide Web (WWW).
At the same time that the Internet""s popularity has been growing, the trend in personal computer design has been towards increased portability. This trend is best evidenced by the rapid growth in popularity of so-called xe2x80x9cnotebookxe2x80x9d or xe2x80x9claptopxe2x80x9d computers. While PCs are becoming both more powerful and more portable, advances in communications infrastructure have not necessarily kept pace. A significant limitation on the ability of personal computers to exploit the Internet to full benefit is a lack of sufficient communications bandwidth. Similar problems may be caused by such conditions as high network traffic, even for high-speed Internet access lines. Such problems often translate into very long user-visible latencies when users interact with the Internet. Accordingly, one of the challenges faced by developers of hardware and software used for Internet communications has been to find ways to reduce user-visible latencies as much as possible.
One source of user-visible latency for Internet communications can be traced back to the communications protocols. Devices coupled to the Internet typically communicate with one another using HTTP (HyperText Transfer Protocol), which in turn makes use of the Transmission Control Protocol (TCP) as its transport protocol. TCP uses a three-way handshake procedure to establish a connection between, for example, a client device and a server device. Since a single HTTP transaction may involve transmission of a number of distinct data packets, possibly transmitted over different communications links, such handshaking may potentially introduce a significant amount of user-visible latency into any given transaction.
In view of the foregoing, efforts have been directed at improving the efficiency of HTTP communications. According to one such approach, known as xe2x80x9cpersistent HTTPxe2x80x9d or P-HTTP, a persistent connection is established between a client device and a server device, thus limiting the overhead introduced by the TCP three-way handshake procedure to only a single occurrence at the beginning of the connection. This persistent connection may then be reused to retrieve, for example, all of the URLs (Uniform Resource Locators) associated with a requested HTML (HyperText Markup Language) document. In a variation on this approach, requests for multiple URLs may be pipelined within the same persistent connection, further improving communications efficiency. In an alternate approach, known as xe2x80x9ctransaction TCPxe2x80x9d or TTCP, rather than reducing the number of handshakes that occur for any given request, the number of messages used to complete the handshake is reduced.
While both the P-HTTP and TTCP approaches help reduce user-visible latencies for HTTP communications, even greater improvements are possible through the use of communications protocols according to embodiments of the present invention.
According to an embodiment of the present invention, a method is provided for communications between two network devices. A first network device transmits a request packet to a second network device. The request packet includes a request to establish a connection and a request for data, wherein the request to establish a connection includes a connection identifier. The second network device compares the connection identifier to a corresponding connection identifier that it maintains, and selectively accepts a new connection or discards the request. The second network device transmits a response packet to the first network device which includes a confirmation of the request to establish a connection and a reply to the request for data. A connection is then maintained between the first and second network devices after receipt of the response packet.